package com.ophiux.micro.core.infrastructure;

import java.util.List;
import java.util.Map;

import com.ophiux.utils.exception.OphiuxDaoException;


/**
 * 说明：通用Mapper,每个模块需要继承它<br>
 * <h1>创 建 人: hehailong</h1><br>
 * 创建日期: 2018年11月8日 下午2:44:47<br>
 * 修改记录：
 */
public interface CommonMapper<T> {
	
	/**
	 * 说明：新增<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param model	实体对象
	 * @throws OphiuxDaoException
	 */
	public void insert(T model) throws OphiuxDaoException;
	
	/**
	 * 说明：修改<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param model	实体对象
	 * @throws OphiuxDaoException
	 */
	public void update(T model) throws OphiuxDaoException;
	
	/**
	 * 说明：删除<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param uniqueId	唯一约束
	 * @throws OphiuxDaoException
	 */
	public void delete(Object uniqueId) throws OphiuxDaoException;

	/**
	 * 说明：查询一条数据对象<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param uniqueId	唯一约束
	 * @return T
	 * @throws OphiuxDaoException
	 */
	public T selectOneByKey(Object uniqueId)throws OphiuxDaoException;

	/**
	 * 说明：多条件查询一条数据对象<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param 	map	条件集合
	 * @return T
	 * @throws OphiuxDaoException
	 */
	public T selectOne(Map map)throws OphiuxDaoException;
	/**
	 * 说明：查询所有数据<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param map		Map条件集合
	 * @return	List<T>
	 * @throws OphiuxDaoException
	 */
	@SuppressWarnings("rawtypes")
	public List<T> selectAll(Map map) throws OphiuxDaoException;
	
	/**
	 * 说明：查询所有数据条数<br>
	 * 创 建 人: <h1>hehailong</h1><br>
	 * @param map		Map条件集合
	 * @return	int
	 * @throws OphiuxDaoException
	 */
	@SuppressWarnings("rawtypes")
	public int selectAllCount(Map map) throws OphiuxDaoException;
	
}
